xen: arm: increase priority of SGIs used as IPIs
authorIan Campbell <ian.campbell@citrix.com>
Mon, 17 Mar 2014 11:31:02 +0000 (11:31 +0000)
committerIan Campbell <ian.campbell@citrix.com>
Mon, 17 Mar 2014 12:47:48 +0000 (12:47 +0000)
commit8ccfba815c21c5188cfebb800e7c82bbd98b967c
treece28bd114d404a38b322ecfc6042ff981e9224b5
parent9d073bf65c8b70d23de7e4b8d67182f18131499e
xen: arm: increase priority of SGIs used as IPIs

Code such as on_selected_cpus expects/requires that an IPI can preempt a
processor which is just handling a normal interrupt. Lacking this property can
result in a deadlock between two CPUs trying to IPI each other from interrupt
context.

For the time being there is only two priorities, IRQ and IPI, although it is
also conceivable that in the future some IPIs might be higher priority than
others. This could be used to implement a better BUG() than we have now, but I
haven't tackled that yet.

Tested with a debug patch which sends a local IPI from a keyhandler, which is
run in serial interrupt context.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Acked-by: Julien Grall <julien.grall@linaro.org>
Cc: Oleksandr Tyshchenko <oleksandr.tyshchenko@globallogic.com>
xen/arch/arm/gic.c
xen/arch/arm/time.c
xen/include/asm-arm/gic.h